# -*- coding: utf-8 -*-
from email.header import Header
from email.mime.text import MIMEText
from email.utils import formataddr
import smtplib

class SendMail():

    # 用户信息
    from_addr = 'xieyabin@topnet.net.cn'
    password = 'Xyb.1206' # # 腾讯QQ邮箱或腾讯企业邮箱必须使用授权码进行第三方登陆
    smtp_server = 'smtp.exmail.qq.com'  # 腾讯服务器地址
    # 服务端配置，账密登陆
    server = smtplib.SMTP(smtp_server, 25)
    # 腾讯邮箱支持SSL(不强制)， 不支持TLS。
    # server = smtplib.SMTP_SSL(smtp_server, 465) # 按需开启
    # 调试模式，打印日志
    # server.set_debuglevel(1) # 按需开启
    # 登陆服务器
    server.login(from_addr, password)

    def send(self,count,to_addr):
        # 收件人
        # to_addr = 'xieyabin@topnet.net.cn'
        # 发送内容
        # count = '发送邮件的内容'
        msg = MIMEText(count, 'plain', 'utf-8')
        # 发件人收件人信息格式化 ，可防空
        # 固定用法不必纠结，我使用lambda表达式进行简单封装方便调用
        lam_format_addr = lambda name, addr: formataddr((Header(name, 'utf-8').encode(), addr))
        # 传入昵称和邮件地址
        msg['From'] = lam_format_addr('系统', self.from_addr)  # 腾讯邮箱可略
        msg['To'] = lam_format_addr("", to_addr)  # 腾讯邮箱可略
        # 邮件标题
        msg['Subject'] = Header('签到异常通知！！！', 'utf-8').encode() # 腾讯邮箱略过会导致邮件被屏蔽

        # 发送邮件及退出
        self.server.sendmail(self.from_addr, to_addr, msg.as_string()) #发送地址需与登陆的邮箱一致
        return self.server
        # self.server.quit()
if __name__ == '__main__':
    mail = SendMail()
    mail.send(count="昨天的打卡记录异常，请登录OA系统确认！",to_addr='xieyabin@topnet.net.cn')
    """
    xieyabin@topnet.net.cn
    1510804792@qq.com
    xybpmm@163.com
    """